<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>


<script>
    let throttle = function () {
        let isClear = arguments[0], fn;

        // 第一个参数表示是否清楚计时器
        if (typeof isClear === 'boolean') {
            // 第二个参数则为函数
            fn = arguments[1];
            fn.__trottleID && clearTimeout(fn.__trottleID);
        } else {
            // 第一个参数为函数
            fn = isClear;
            // 第二个参数为函数执行时候的参数
            let param = arguments[1];
            let p = Object.assign({
                context: null,
                args: [],
                time: 300
            }, param);
            arguments.callee(true, fn);
            fn.__trottleID = setTimeout(function () {
                fn.apply(p.context, p.args)
            }, p.time)
        }
    };

    // 实际使用
    function moveScroll() {
        let top = $(document).scrollTo();
        $('#back').animate({top: top + 30}, 400, 'easeOutCubic')
    }

    // 监听页面滚动事件
    $(window).on('scroll', function () {
        throttle(moveScroll);
    })
</script>
</body>
</html>